package cn.seaboot.excel;

import java.io.IOException;

/**
 * 元素处理器
 * <p>
 * 一种函数式编程，将处理程序拆分成较小的代码片段，
 * <p>
 * 使用的时候，对执行过程中的任意部分不满意，都可以重写对应的脚本。
 *
 * @param <T> 原始数据类型
 */
public interface ElementParser<T, C> {

    /**
     * 元素处理函数
     *
     * @param source -
     * @throws IOException -
     */
    void parse(T source) throws IOException;

    /**
     * 设置上下文
     * <p>
     * 给一个元素处理器设置上下文的时候，需要递归传递到所有对象，类似于 toString() 函数
     *
     * @param context 上下文
     */
    void setContext(C context);
}
